<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/xhtml;charset=utf-8" http-equiv="Content-Type"/>
<meta content="IE=9" http-equiv="X-UA-Compatible"/>
<meta content="Doxygen 1.8.13" name="generator"/>
<title>OpenCV: cv::KeyPoint Class Reference</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script src="../../jquery.js" type="text/javascript"></script>
<script src="../../dynsections.js" type="text/javascript"></script>
<script src="../../tutorial-utils.js" type="text/javascript"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script src="../../search/searchdata.js" type="text/javascript"></script>
<script src="../../search/search.js" type="text/javascript"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js" type="text/javascript"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css"/>
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellpadding="0" cellspacing="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
    <span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script src="../../menudata.js" type="text/javascript"></script>
<script src="../../menu.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onkeydown="return searchBox.OnSearchSelectKey(event)" onmouseout="return searchBox.OnSearchSelectHide()" onmouseover="return searchBox.OnSearchSelectShow()">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe frameborder="0" id="MSearchResults" name="MSearchResults" src="javascript:void(0)">
</iframe>
</div>
<div class="navpath" id="nav-path">
  <ul>
<li class="navelem"><a class="el" href="../../d2/d75/namespacecv.html">cv</a></li><li class="navelem"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> |
<a href="#pub-static-methods">Static Public Member Functions</a> |
<a href="#pub-attribs">Public Attributes</a> |
<a href="../../de/dbf/classcv_1_1KeyPoint-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">cv::KeyPoint Class Reference<div class="ingroups"><a class="el" href="../../d0/de1/group__core.html">Core functionality</a> » <a class="el" href="../../dc/d84/group__core__basic.html">Basic structures</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<p>Data structure for salient point detectors.  
 <a href="../../d2/d29/classcv_1_1KeyPoint.html#details">More...</a></p>
<p><code>#include &lt;opencv2/core/types.hpp&gt;</code></p>
<div class="dynheader">
Inheritance diagram for cv::KeyPoint:</div>
<div class="dyncontent">
 <div class="center">
  <img alt="" src="../../d2/d29/classcv_1_1KeyPoint.png" usemap="#cv::KeyPoint_map"/>
  <map id="cv::KeyPoint_map" name="cv::KeyPoint_map">
<area alt="cv::xfeatures2d::Elliptic_KeyPoint" coords="0,56,198,80" href="../../d2/d71/classcv_1_1xfeatures2d_1_1Elliptic__KeyPoint.html" shape="rect" title="Elliptic region around an interest point. "/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a507d41b54805e9ee5042b922e68e4372"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a507d41b54805e9ee5042b922e68e4372">KeyPoint</a> ()</td></tr>
<tr class="memdesc:a507d41b54805e9ee5042b922e68e4372"><td class="mdescLeft"> </td><td class="mdescRight">the default constructor  <a href="#a507d41b54805e9ee5042b922e68e4372">More...</a><br/></td></tr>
<tr class="separator:a507d41b54805e9ee5042b922e68e4372"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8ce2d246f9dbd4ce3f1539bf40be9533"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a8ce2d246f9dbd4ce3f1539bf40be9533">KeyPoint</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga7d080aa40de011e4410bca63385ffe2a">Point2f</a> _pt, float _size, float _angle=-1, float _response=0, int _octave=0, int _class_id=-1)</td></tr>
<tr class="separator:a8ce2d246f9dbd4ce3f1539bf40be9533"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a2990cc1848eeb189cac9709f04c8f4d3"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a2990cc1848eeb189cac9709f04c8f4d3">KeyPoint</a> (float x, float y, float _size, float _angle=-1, float _response=0, int _octave=0, int _class_id=-1)</td></tr>
<tr class="separator:a2990cc1848eeb189cac9709f04c8f4d3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac90165a05ac1ffc86a2282299acad922"><td align="right" class="memItemLeft" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#ac90165a05ac1ffc86a2282299acad922">hash</a> () const</td></tr>
<tr class="separator:ac90165a05ac1ffc86a2282299acad922"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:acfcc8e0dd1a634a7583686e18d372237"><td align="right" class="memItemLeft" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#acfcc8e0dd1a634a7583686e18d372237">convert</a> (const std::vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt; &amp;keypoints, std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga7d080aa40de011e4410bca63385ffe2a">Point2f</a> &gt; &amp;points2f, const std::vector&lt; int &gt; &amp;keypointIndexes=std::vector&lt; int &gt;())</td></tr>
<tr class="separator:acfcc8e0dd1a634a7583686e18d372237"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab6a67a0ab17d65a1b28502eba424bfde"><td align="right" class="memItemLeft" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#ab6a67a0ab17d65a1b28502eba424bfde">convert</a> (const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga7d080aa40de011e4410bca63385ffe2a">Point2f</a> &gt; &amp;points2f, std::vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt; &amp;keypoints, float <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a308006c9f963547a8cff61548ddd2ef2">size</a>=1, float <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a1f163ac418c281042e28895b20514360">response</a>=1, int <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#aee152750aa98ea54a48196a937197095">octave</a>=0, int <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#aea339bc868102430087b659cd0709c11">class_id</a>=-1)</td></tr>
<tr class="separator:ab6a67a0ab17d65a1b28502eba424bfde"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6a56a625fb5fb0df7c63c69ce7713360"><td align="right" class="memItemLeft" valign="top">static float </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a6a56a625fb5fb0df7c63c69ce7713360">overlap</a> (const <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &amp;kp1, const <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &amp;kp2)</td></tr>
<tr class="separator:a6a56a625fb5fb0df7c63c69ce7713360"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a4484e94502486930e94e7391adf9d215"><td align="right" class="memItemLeft" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a4484e94502486930e94e7391adf9d215">angle</a></td></tr>
<tr class="separator:a4484e94502486930e94e7391adf9d215"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aea339bc868102430087b659cd0709c11"><td align="right" class="memItemLeft" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#aea339bc868102430087b659cd0709c11">class_id</a></td></tr>
<tr class="memdesc:aea339bc868102430087b659cd0709c11"><td class="mdescLeft"> </td><td class="mdescRight">object class (if the keypoints need to be clustered by an object they belong to)  <a href="#aea339bc868102430087b659cd0709c11">More...</a><br/></td></tr>
<tr class="separator:aea339bc868102430087b659cd0709c11"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aee152750aa98ea54a48196a937197095"><td align="right" class="memItemLeft" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#aee152750aa98ea54a48196a937197095">octave</a></td></tr>
<tr class="memdesc:aee152750aa98ea54a48196a937197095"><td class="mdescLeft"> </td><td class="mdescRight">octave (pyramid layer) from which the keypoint has been extracted  <a href="#aee152750aa98ea54a48196a937197095">More...</a><br/></td></tr>
<tr class="separator:aee152750aa98ea54a48196a937197095"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae6b87d798d3e181a472b08fa33883abe"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga7d080aa40de011e4410bca63385ffe2a">Point2f</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#ae6b87d798d3e181a472b08fa33883abe">pt</a></td></tr>
<tr class="memdesc:ae6b87d798d3e181a472b08fa33883abe"><td class="mdescLeft"> </td><td class="mdescRight">coordinates of the keypoints  <a href="#ae6b87d798d3e181a472b08fa33883abe">More...</a><br/></td></tr>
<tr class="separator:ae6b87d798d3e181a472b08fa33883abe"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1f163ac418c281042e28895b20514360"><td align="right" class="memItemLeft" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a1f163ac418c281042e28895b20514360">response</a></td></tr>
<tr class="memdesc:a1f163ac418c281042e28895b20514360"><td class="mdescLeft"> </td><td class="mdescRight">the response by which the most strong keypoints have been selected. Can be used for the further sorting or subsampling  <a href="#a1f163ac418c281042e28895b20514360">More...</a><br/></td></tr>
<tr class="separator:a1f163ac418c281042e28895b20514360"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a308006c9f963547a8cff61548ddd2ef2"><td align="right" class="memItemLeft" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html#a308006c9f963547a8cff61548ddd2ef2">size</a></td></tr>
<tr class="memdesc:a308006c9f963547a8cff61548ddd2ef2"><td class="mdescLeft"> </td><td class="mdescRight">diameter of the meaningful keypoint neighborhood  <a href="#a308006c9f963547a8cff61548ddd2ef2">More...</a><br/></td></tr>
<tr class="separator:a308006c9f963547a8cff61548ddd2ef2"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a id="details" name="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Data structure for salient point detectors. </p>
<p>The class instance stores a keypoint, i.e. a point feature found by one of many available keypoint detectors, such as Harris corner detector, <a class="el" href="../../d5/d51/group__features2d__main.html#ga816d870cbdca71c6790c71bdf17df099">FAST</a>, StarDetector, SURF, SIFT etc.</p>
<p>The keypoint is characterized by the 2D position, scale (proportional to the diameter of the neighborhood that needs to be taken into account), orientation and some other parameters. The keypoint neighborhood is then analyzed by another algorithm that builds a descriptor (usually represented as a feature vector). The keypoints representing the same object in different images can then be matched using KDTree or another method. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a507d41b54805e9ee5042b922e68e4372"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a507d41b54805e9ee5042b922e68e4372">◆ </a></span>KeyPoint() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::KeyPoint::KeyPoint </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>&lt;KeyPoint object&gt;</td><td>=</td><td>cv.KeyPoint(</td><td class="paramname"></td><td>)</td></tr><tr><td style="width: 20px;"></td><td>&lt;KeyPoint object&gt;</td><td>=</td><td>cv.KeyPoint(</td><td class="paramname">x, y, _size[, _angle[, _response[, _octave[, _class_id]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p>the default constructor </p>
</div>
</div>
<a id="a8ce2d246f9dbd4ce3f1539bf40be9533"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ce2d246f9dbd4ce3f1539bf40be9533">◆ </a></span>KeyPoint() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::KeyPoint::KeyPoint </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga7d080aa40de011e4410bca63385ffe2a">Point2f</a> </td>
          <td class="paramname"><em>_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>_angle</em> = <code>-1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>_response</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>_octave</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>_class_id</em> = <code>-1</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>&lt;KeyPoint object&gt;</td><td>=</td><td>cv.KeyPoint(</td><td class="paramname"></td><td>)</td></tr><tr><td style="width: 20px;"></td><td>&lt;KeyPoint object&gt;</td><td>=</td><td>cv.KeyPoint(</td><td class="paramname">x, y, _size[, _angle[, _response[, _octave[, _class_id]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">_pt</td><td>x &amp; y coordinates of the keypoint </td></tr>
    <tr><td class="paramname">_size</td><td>keypoint diameter </td></tr>
    <tr><td class="paramname">_angle</td><td>keypoint orientation </td></tr>
    <tr><td class="paramname">_response</td><td>keypoint detector response on the keypoint (that is, strength of the keypoint) </td></tr>
    <tr><td class="paramname">_octave</td><td>pyramid octave in which the keypoint has been detected </td></tr>
    <tr><td class="paramname">_class_id</td><td>object id </td></tr>
  </table>
  </dd>
</dl>
</div>
</div>
<a id="a2990cc1848eeb189cac9709f04c8f4d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2990cc1848eeb189cac9709f04c8f4d3">◆ </a></span>KeyPoint() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::KeyPoint::KeyPoint </td>
          <td>(</td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>_angle</em> = <code>-1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>_response</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>_octave</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>_class_id</em> = <code>-1</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>&lt;KeyPoint object&gt;</td><td>=</td><td>cv.KeyPoint(</td><td class="paramname"></td><td>)</td></tr><tr><td style="width: 20px;"></td><td>&lt;KeyPoint object&gt;</td><td>=</td><td>cv.KeyPoint(</td><td class="paramname">x, y, _size[, _angle[, _response[, _octave[, _class_id]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>x-coordinate of the keypoint </td></tr>
    <tr><td class="paramname">y</td><td>y-coordinate of the keypoint </td></tr>
    <tr><td class="paramname">_size</td><td>keypoint diameter </td></tr>
    <tr><td class="paramname">_angle</td><td>keypoint orientation </td></tr>
    <tr><td class="paramname">_response</td><td>keypoint detector response on the keypoint (that is, strength of the keypoint) </td></tr>
    <tr><td class="paramname">_octave</td><td>pyramid octave in which the keypoint has been detected </td></tr>
    <tr><td class="paramname">_class_id</td><td>object id </td></tr>
  </table>
  </dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acfcc8e0dd1a634a7583686e18d372237"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfcc8e0dd1a634a7583686e18d372237">◆ </a></span>convert() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void cv::KeyPoint::convert </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt; &amp; </td>
          <td class="paramname"><em>keypoints</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga7d080aa40de011e4410bca63385ffe2a">Point2f</a> &gt; &amp; </td>
          <td class="paramname"><em>points2f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; int &gt; &amp; </td>
          <td class="paramname"><em>keypointIndexes</em> = <code>std::vector&lt; int &gt;()</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>points2f</td><td>=</td><td>cv.KeyPoint_convert(</td><td class="paramname">keypoints[, keypointIndexes]</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>keypoints</td><td>=</td><td>cv.KeyPoint_convert(</td><td class="paramname">points2f[, size[, response[, octave[, class_id]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p>This method converts vector of keypoints to vector of points or the reverse, where each keypoint is assigned the same size and the same orientation.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">keypoints</td><td>Keypoints obtained from any feature detection algorithm like SIFT/SURF/ORB </td></tr>
    <tr><td class="paramname">points2f</td><td>Array of (x,y) coordinates of each keypoint </td></tr>
    <tr><td class="paramname">keypointIndexes</td><td>Array of indexes of keypoints to be converted to points. (Acts like a mask to convert only specified keypoints) </td></tr>
  </table>
  </dd>
</dl>
</div>
</div>
<a id="ab6a67a0ab17d65a1b28502eba424bfde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6a67a0ab17d65a1b28502eba424bfde">◆ </a></span>convert() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void cv::KeyPoint::convert </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga7d080aa40de011e4410bca63385ffe2a">Point2f</a> &gt; &amp; </td>
          <td class="paramname"><em>points2f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt; &amp; </td>
          <td class="paramname"><em>keypoints</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>size</em> = <code>1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>response</em> = <code>1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>octave</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>class_id</em> = <code>-1</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>points2f</td><td>=</td><td>cv.KeyPoint_convert(</td><td class="paramname">keypoints[, keypointIndexes]</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>keypoints</td><td>=</td><td>cv.KeyPoint_convert(</td><td class="paramname">points2f[, size[, response[, octave[, class_id]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">points2f</td><td>Array of (x,y) coordinates of each keypoint </td></tr>
    <tr><td class="paramname">keypoints</td><td>Keypoints obtained from any feature detection algorithm like SIFT/SURF/ORB </td></tr>
    <tr><td class="paramname">size</td><td>keypoint diameter </td></tr>
    <tr><td class="paramname">response</td><td>keypoint detector response on the keypoint (that is, strength of the keypoint) </td></tr>
    <tr><td class="paramname">octave</td><td>pyramid octave in which the keypoint has been detected </td></tr>
    <tr><td class="paramname">class_id</td><td>object id </td></tr>
  </table>
  </dd>
</dl>
</div>
</div>
<a id="ac90165a05ac1ffc86a2282299acad922"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac90165a05ac1ffc86a2282299acad922">◆ </a></span>hash()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t cv::KeyPoint::hash </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
</div>
</div>
<a id="a6a56a625fb5fb0df7c63c69ce7713360"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a56a625fb5fb0df7c63c69ce7713360">◆ </a></span>overlap()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static float cv::KeyPoint::overlap </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &amp; </td>
          <td class="paramname"><em>kp1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &amp; </td>
          <td class="paramname"><em>kp2</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.KeyPoint_overlap(</td><td class="paramname">kp1, kp2</td><td>)</td></tr></table>
</div><div class="memdoc">
<p>This method computes overlap for pair of keypoints. Overlap is the ratio between area of keypoint regions' intersection and area of keypoint regions' union (considering keypoint region as circle). If they don't overlap, we get zero. If they coincide at same location with same size, we get 1. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">kp1</td><td>First keypoint </td></tr>
    <tr><td class="paramname">kp2</td><td>Second keypoint </td></tr>
  </table>
  </dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a4484e94502486930e94e7391adf9d215"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4484e94502486930e94e7391adf9d215">◆ </a></span>angle</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float cv::KeyPoint::angle</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>computed orientation of the keypoint (-1 if not applicable); it's in [0,360) degrees and measured relative to image coordinate system, ie in clockwise. </p>
</div>
</div>
<a id="aea339bc868102430087b659cd0709c11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea339bc868102430087b659cd0709c11">◆ </a></span>class_id</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cv::KeyPoint::class_id</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>object class (if the keypoints need to be clustered by an object they belong to) </p>
</div>
</div>
<a id="aee152750aa98ea54a48196a937197095"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee152750aa98ea54a48196a937197095">◆ </a></span>octave</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cv::KeyPoint::octave</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>octave (pyramid layer) from which the keypoint has been extracted </p>
</div>
</div>
<a id="ae6b87d798d3e181a472b08fa33883abe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6b87d798d3e181a472b08fa33883abe">◆ </a></span>pt</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga7d080aa40de011e4410bca63385ffe2a">Point2f</a> cv::KeyPoint::pt</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>coordinates of the keypoints </p>
</div>
</div>
<a id="a1f163ac418c281042e28895b20514360"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f163ac418c281042e28895b20514360">◆ </a></span>response</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float cv::KeyPoint::response</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>the response by which the most strong keypoints have been selected. Can be used for the further sorting or subsampling </p>
</div>
</div>
<a id="a308006c9f963547a8cff61548ddd2ef2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a308006c9f963547a8cff61548ddd2ef2">◆ </a></span>size</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float cv::KeyPoint::size</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>diameter of the meaningful keypoint neighborhood </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>opencv2/core/<a class="el" href="../../db/dfc/modules_2core_2include_2opencv2_2core_2types_8hpp.html">types.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:43 for OpenCV by  <a href="http://www.doxygen.org/index.html">
<img alt="doxygen" class="footer" src="../../doxygen.png"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
